Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Vertex-Shader</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Vertex-Shader"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Vertex-Shader rootpage-Vertex-Shader skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Vertex-Shader</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>Vertex-Shader</b> (auch: <i>Vertexshader</i>, Abk. <i>VS</i>) sind ein Typus von <a href="Shader" title="Shader">Shadern</a>. Sie werden im Verlauf der <a href="Grafikpipeline" title="Grafikpipeline">Grafikpipeline</a>, also der Verarbeitung eines 3D-Objektes auf der <a href="Grafikkarte" title="Grafikkarte">Grafikkarte</a>, ausgeführt. Vertex-Shader sind in diesem Zusammenhang für die Verarbeitung aller Eckpunkte des 3D-Modells (der sogenannten <a href="Vertex" title="Vertex">Vertices</a>) zuständig. Deshalb wird im Normalfall für jeden Vertex der Vertex-Shader einmal aufgerufen, woher auch der Name rührt.
</p>

<div class="mw-heading mw-heading2"><h2 id="Funktion">Funktion</h2></div>
<p>Ein Vertex-Shader dient dazu, die Geometrie einer Szene zu manipulieren. Dazu werden die Koordinaten der <a href="Vertex" title="Vertex">Vertices</a> (Eckpunkte von dreidimensionalen Objekten) <a href="Liste_von_Transformationen_in_der_Mathematik" title="Liste von Transformationen in der Mathematik">transformiert</a> (was sowohl eine Verschiebung, eine Rotation oder eine Skalierung umfassen kann, eventuell auch Kombinationen). So lässt sich die Form von Objekten beeinflussen, was sich wiederum auch in ihrer Beleuchtung niederschlägt. Eine typische Modifikation des Modells, die im Vertex-Shader ausgeführt wird, betrifft die <a href="Koordinatensystem" title="Koordinatensystem">Koordinatensysteme</a>. So rechnet der Vertex-Shader die Position der Vertizes aus dem Koordinatensystem des 3D-Modells erst in das globale Koordinatensystem, was sich alle 3D-Objekte teilen, um. Danach kann er die Vertizes auch noch in das Kamerakoordinatensystem umrechnen. Da der Vertex-Shader jedoch pro Vertex aufgerufen wird, kann der Vertex-Shader keine neuen Punkte zum 3D-Modell hinzufügen. Diese Aufgabe übernimmt hingegen der <a href="Geometry-Shader" title="Geometry-Shader">Geometry-Shader</a>, der auch meist nach dem Vertex-Shader aufgerufen wird. Auf modernen Grafikkarten kann es auch <a href="Tessellation-Shader" title="Tessellation-Shader">Tessellation-Shader</a> zum Hinzufügen neuer Vertizes geben. Hinsichtlich des Funktionsumfangs ersetzt der Vertex-Shader somit das ältere und weniger flexible <a href="Transform_and_Lighting" title="Transform and Lighting">Transform &amp; Lighting</a> (T&amp;L).
</p><p>Mit Hilfe von Vertex-Shadern sind Effekte wie Vertex Lighting, Terrain-/Objektdeformation, Wasserwellen oder <a href="Fischaugenobjektiv" title="Fischaugenobjektiv">Fischaugenobjektiv</a> möglich. Die meisten heutigen Grafikchips enthalten Shadereinheiten, die die Vertex-Shader ausführen. Dadurch müssen diese Geometrie Berechnungen nicht auf der <a href="Hauptprozessor" class="mw-redirect" title="Hauptprozessor">CPU</a> des Systems laufen, wodurch sie entlastet wird und für andere Aufgaben eingesetzt werden kann. In der Regel werden mehrere Shadereinheiten in GPUs verbaut, damit diese nicht zum Flaschenhals der Grafikpipeline werden.
</p><p>Zusätzliche Informationen zur Verarbeitungskette und zur Programmierung von Shadern gibt es in dem Artikel <a href="Shader" title="Shader">Shader</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Kompatibilität"><span id="Kompatibilit.C3.A4t"></span>Kompatibilität</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Hardware">Hardware</h3></div>
<p>Die folgende Tabelle zeigt eine Übersicht, welche Grafikkarten bzw. Grafikchips mit welcher <a href="DirectX" title="DirectX">DirectX</a>-Version welche Vertex-Shader-Version unterstützen. Der Vollständigkeit halber ist auch T&amp;L, der Vorläufer von Vertex-Shadern, mitaufgenommen. Hierbei ist zu beachten, dass Grafikchips in der Regel ältere Versionen ebenfalls unterstützen, so können beispielsweise Vertex-Shader-3.0-Chips auch mit Vertex-Shadern der Version 2.0 arbeiten. Diese Abwärtskompatibilität übernimmt hauptsächlich der Grafikkartentreiber und nicht der Grafikprozessor.
</p>
<table class="wikitable">

<tbody><tr class="hintergrundfarbe8">
<th>VS-Version
</th>
<th>nötige <a href="OpenGL" title="OpenGL">OpenGL</a> Version¹
</th>
<th>nötige <a href="DirectX" title="DirectX">DirectX</a> Version
</th>
<th><a href="3DLabs" title="3DLabs">3DLabs</a>
</th>
<th><a href="ATI_Technologies" title="ATI Technologies">ATI</a>
</th>
<th><a href="Intel" title="Intel">Intel</a>
</th>
<th><a href="Matrox" class="mw-redirect" title="Matrox">Matrox</a>
</th>
<th><a href="NVIDIA" class="mw-redirect" title="NVIDIA">NVIDIA</a>
</th>
<th><a href="S3_Graphics" title="S3 Graphics">S3 Graphics</a>
</th>
<th><a href="Silicon_Integrated_Systems" title="Silicon Integrated Systems">SiS</a>
</th>
<th><a href="XGI" class="mw-redirect" title="XGI">XGI</a>
</th></tr>
<tr>
<td>T&amp;L
</td>
<td>1.0
</td>
<td>7.0
</td>
<td>–
</td>
<td><a href="ATI-Radeon-7000-Serie" title="ATI-Radeon-7000-Serie">Radeon-7000-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td><a href="Nvidia-GeForce-256-Serie" title="Nvidia-GeForce-256-Serie">GeForce 256</a>, <a href="Nvidia-GeForce-2-Serie" title="Nvidia-GeForce-2-Serie">GeForce-2-Serie</a>, <a href="Nvidia-GeForce-4-Serie" title="Nvidia-GeForce-4-Serie">GeForce 4 MX</a>
</td>
<td>–
</td>
<td>–
</td>
<td>–
</td></tr>
<tr>
<td>1.0/1.1
</td>
<td>
</td>
<td>8.1
</td>
<td>Wildcat VP
</td>
<td><a href="ATI-Radeon-8000-Serie" title="ATI-Radeon-8000-Serie">Radeon 8500 – 9250</a>
</td>
<td>–
</td>
<td>Parhelia-Serie
</td>
<td><a href="Nvidia-GeForce-3-Serie" title="Nvidia-GeForce-3-Serie">GeForce-3-Serie</a>, <a href="Nvidia-GeForce-4-Serie" title="Nvidia-GeForce-4-Serie">GeForce-4-Serie</a>
</td>
<td>–
</td>
<td>Xabre-Serie
</td>
<td><a href="XGI_Volari" title="XGI Volari">Volari V3-Serie</a> (außer V3XT)
</td></tr>
<tr>
<td>2.0
</td>
<td>
</td>
<td>9.0
</td>
<td>Wildcat Realizm
</td>
<td><a href="ATI-Radeon-9000-Serie" title="ATI-Radeon-9000-Serie">Radeon 9500 – 9800</a>, <a href="ATI-Radeon-X-Serie" title="ATI-Radeon-X-Serie">X300 - X850</a>
</td>
<td><a href="Intel_GMA" title="Intel GMA">Intel GMA</a> 900
</td>
<td>–
</td>
<td><a href="Nvidia-GeForce-FX-Serie" title="Nvidia-GeForce-FX-Serie">GeForce-FX-Serie</a>
</td>
<td><a href="S3_Chrome#DeltaChrome" title="S3 Chrome">DeltaChrome</a>, <a href="S3_Chrome#GammaChrome" title="S3 Chrome">GammaChrome</a>, <a href="S3_Chrome#Chrome_S20" title="S3 Chrome">Chrome-S2x-Serie</a>
</td>
<td>Mirage 3, Mirage 3+
</td>
<td><a href="XGI_Volari" title="XGI Volari">Volari V3XT, Volari V5-Serie, Volari V8-Serie, Volari 8300, Volari XP10</a>
</td></tr>
<tr>
<td>3.0
</td>
<td>
</td>
<td>9.0c
</td>
<td>–
</td>
<td><a href="ATI-Radeon-X1-Serie" class="mw-redirect" title="ATI-Radeon-X1-Serie">Radeon-X1-Serie</a>
</td>
<td><a href="Intel_GMA" title="Intel GMA">Intel GMA</a> 950, 3000, X3000
</td>
<td>–
</td>
<td><a href="Nvidia-GeForce-6-Serie" title="Nvidia-GeForce-6-Serie">GeForce-6-Serie</a>, <a href="Nvidia-Geforce-7-Serie" class="mw-redirect" title="Nvidia-Geforce-7-Serie">GeForce-7-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td>–
</td></tr>
<tr>
<td>4.0
</td>
<td>
</td>
<td>10
</td>
<td>–
</td>
<td><a href="ATI-Radeon-HD-2000-Serie" title="ATI-Radeon-HD-2000-Serie">Radeon-HD-2000-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td><a href="Nvidia-Geforce-8-Serie" class="mw-redirect" title="Nvidia-Geforce-8-Serie">Geforce-8-Serie</a>, <a href="Nvidia-Geforce-9-Serie" class="mw-redirect" title="Nvidia-Geforce-9-Serie">Geforce-9-Serie</a>, <a href="Nvidia-Geforce-200-Serie" class="mw-redirect" title="Nvidia-Geforce-200-Serie">Geforce-200-Serie</a>
</td>
<td>–
</td>
<td><i>Mirage 4</i>
</td>
<td>–
</td></tr>
<tr>
<td>4.1
</td>
<td>
</td>
<td>10.1
</td>
<td>–
</td>
<td><a href="ATI-Radeon-HD-3000-Serie" title="ATI-Radeon-HD-3000-Serie">Radeon-HD-3000-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td><a href="Nvidia-Geforce-200-Serie" class="mw-redirect" title="Nvidia-Geforce-200-Serie">Geforce-200-Serie</a>
</td>
<td><a href="S3_Chrome#Chrome_S20" title="S3 Chrome">Chrome-400/500-Serie</a>
</td>
<td>–
</td>
<td>–
</td></tr>
<tr>
<td>5.0
</td>
<td>
</td>
<td>11.0
</td>
<td>–
</td>
<td><a href="ATI-Radeon-HD-5000-Serie" title="ATI-Radeon-HD-5000-Serie">Radeon-HD-5000-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td><a href="Nvidia-Geforce-400-Serie" class="mw-redirect" title="Nvidia-Geforce-400-Serie">Geforce-400-Serie</a>
</td>
<td>–
</td>
<td>–
</td>
<td>–
</td></tr></tbody></table>
<p>¹ OpenGL unterstützte schon immer die Möglichkeit mit sogenannten herstellerspezifischen Extensions Funktionen einer Grafikkarte zu nutzen, die vom OpenGL Standard noch nicht abgedeckt wurden.
</p>
<div class="mw-heading mw-heading3"><h3 id="Software">Software</h3></div>
<p>Weil je nach Shader-Version der Funktionsumfang und die Programmierbarkeit stark unterschiedlich ausfallen kann, steht ein Entwickler prinzipiell vor der Wahl,
</p>
<ul><li>ganz auf Vertex-Shader zu verzichten und alles mit Hilfe der CPU zu berechnen. Dieser Ansatz ist heute nicht mehr gängig, weil so gut wie jede heutige 3D-Anwendung ohnehin Leistungsvoraussetzungen stellt, die hinreichend schnelle Grafikkarten voraussetzt, welche aber wiederum so aktuell sind, dass sie bereits Vertex-Shader-Einheiten enthalten.</li>
<li>viele Vertex-Shader-Versionen zu unterstützen, indem er für jede zu unterstützende Version eigene, optimierte Shader schreibt (sogenannte <i>Renderpfade</i>). Hierbei werden alle Grafikkarten unterstützt, die mit den angepeilten Shader-Versionen kompatibel sind.</li>
<li>nur Vertex-Shader-Versionen ab einer bestimmten Version zu unterstützen.</li></ul>
<p>Ab DirectX Version 10 wird die sogenannte Fixed-Function-Pipeline, eine vorgegebene Vertex- und Pixel-Shader-Kombination für einfache Aufgaben, nicht mehr unterstützt. Der Programmierer muss also immer einen Vertex-Shader vorgeben.
</p>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Shader" title="Shader">Shader</a></li>
<li><a href="Geometry-Shader" title="Geometry-Shader">Geometry-Shader</a></li>
<li><a href="Tessellation-Shader" title="Tessellation-Shader">Tessellation-Shader</a></li>
<li><a href="Pixel-Shader" title="Pixel-Shader">Pixel-Shader</a></li>
<li><a href="Compute-Shader" title="Compute-Shader">Compute-Shader</a></li>
<li><a href="Direct3D" title="Direct3D">Direct3D</a></li>
<li><a href="OpenGL" title="OpenGL">OpenGL</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://www.gamedev.net/reference/articles/article1936.asp">Terrain Geomorphing in the Vertex Shader</a> GameDev</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2024-10-17" href="https://de.wikipedia.org/wiki/?title=Vertex-Shader&amp;oldid=249493545">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>